/**
 * 更新系列标签可见性
 * @param {string} value - 可见性值，'true'表示显示
 * @param {Object} currentOptions - 当前图表配置选项
 * @returns {Object} 更新后的图表配置选项
 */
function updateSeriesLabelVisibility(value, currentOptions) {
    if (currentOptions.series && Array.isArray(currentOptions.series)) {
        currentOptions.series.forEach(series => {
            series.label = series.label || {};
            series.label.show = value === 'true';
        });
    }
    return currentOptions;
}

/**
 * 更新系列标签位置
 * @param {string} value - 位置值（如'top'、'bottom'等）
 * @param {Object} currentOptions - 当前图表配置选项
 * @returns {Object} 更新后的图表配置选项
 */
function updateSeriesLabelPosition(value, currentOptions) {
    if (currentOptions.series && Array.isArray(currentOptions.series)) {
        currentOptions.series.forEach(series => {
            series.label = series.label || {};
            series.label.position = value;
        });
    }
    return currentOptions;
}

/**
 * 更新系列标签距离图形的距离
 * @param {*} value - 距离值
 * @param {Object} currentOptions - 当前图表配置选项
 * @returns {Object} 更新后的图表配置选项
 */
function updateSeriesLabelDistance(value, currentOptions) {
    if (currentOptions.series && Array.isArray(currentOptions.series)) {
        currentOptions.series.forEach(series => {
            series.label = series.label || {};
            series.label.distance = value;
        });
    }
    return currentOptions;
}

/**
 * 更新系列标签颜色
 * @param {string} value - 颜色值
 * @param {Object} currentOptions - 当前图表配置选项
 * @returns {Object} 更新后的图表配置选项
 */
function updateSeriesLabelColor(value, currentOptions) {
    if (currentOptions.series && Array.isArray(currentOptions.series)) {
        currentOptions.series.forEach(series => {
            series.label = series.label || {};
            series.label.color = value;
        });
    }
    return currentOptions;
}

/**
 * 更新系列标签字体大小
 * @param {*} value - 字体大小值
 * @param {Object} currentOptions - 当前图表配置选项
 * @returns {Object} 更新后的图表配置选项
 */
function updateSeriesLabelFontSize(value, currentOptions) {
    if (currentOptions.series && Array.isArray(currentOptions.series)) {
        currentOptions.series.forEach(series => {
            series.label = series.label || {};
            series.label.fontSize = value;
        });
    }
    return currentOptions;
}

/**
 * 更新系列标签字体粗细
 * @param {string} value - 字体粗细值
 * @param {Object} currentOptions - 当前图表配置选项
 * @returns {Object} 更新后的图表配置选项
 */
function updateSeriesLabelFontWeight(value, currentOptions) {
    if (currentOptions.series && Array.isArray(currentOptions.series)) {
        currentOptions.series.forEach(series => {
            series.label = series.label || {};
            series.label.fontWeight = value;
        });
    }
    return currentOptions;
}

/**
 * 更新系列标签字体样式
 * @param {string} value - 字体样式（如'normal'、'italic'等）
 * @param {Object} currentOptions - 当前图表配置选项
 * @returns {Object} 更新后的图表配置选项
 */
function updateSeriesLabelFontStyle(value, currentOptions) {
    if (currentOptions.series && Array.isArray(currentOptions.series)) {
        currentOptions.series.forEach(series => {
            series.label = series.label || {};
            series.label.fontStyle = value;
        });
    }
    return currentOptions;
}

/**
 * 更新系列标签格式化器
 * @param {string} value - 格式化字符串
 * @param {Object} currentOptions - 当前图表配置选项
 * @returns {Object} 更新后的图表配置选项
 */
function updateSeriesLabelFormatter(value, currentOptions) {
    if (currentOptions.series && Array.isArray(currentOptions.series)) {
        currentOptions.series.forEach(series => {
            series.label = series.label || {};
            series.label.formatter = value || '{c}';
        });
    }
    return currentOptions;
}

/**
 * 更新系列标签连接线可见性
 * @param {string} value - 可见性值，'true'表示显示
 * @param {Object} currentOptions - 当前图表配置选项
 * @returns {Object} 更新后的图表配置选项
 */
function updateSeriesLabelLineVisibility(value, currentOptions) {
    if (currentOptions.series && Array.isArray(currentOptions.series)) {
        currentOptions.series.forEach(series => {
            series.labelLine = series.labelLine || {};
            series.labelLine.show = value === 'true';
        });
    }
    return currentOptions;
}

/**
 * 更新系列堆叠方式
 * @param {string} value - 堆叠名称，空字符串表示不堆叠
 * @param {Object} currentOptions - 当前图表配置选项
 * @returns {Object} 更新后的图表配置选项
 */
function updateSeriesStack(value, currentOptions) {
    if (currentOptions.series && Array.isArray(currentOptions.series)) {
        currentOptions.series.forEach(series => {
            series.stack = value || '';
        });
    }
    return currentOptions;
}

/**
 * 更新系列标签连接线颜色
 * @param {string} value - 颜色值
 * @param {Object} currentOptions - 当前图表配置选项
 * @returns {Object} 更新后的图表配置选项
 */
function updateSeriesLabelLineStyleColor(value, currentOptions) {
    if (currentOptions.series && Array.isArray(currentOptions.series)) {
        currentOptions.series.forEach(series => {
            series.labelLine = series.labelLine || {};
            series.labelLine.lineStyle = series.labelLine.lineStyle || {};
            series.labelLine.lineStyle.color = value;
        });
    }
    return currentOptions;
}

/**
 * 更新系列标签连接线宽度
 * @param {*} value - 线宽值
 * @param {Object} currentOptions - 当前图表配置选项
 * @returns {Object} 更新后的图表配置选项
 */
function updateSeriesLabelLineStyleWidth(value, currentOptions) {
    if (currentOptions.series && Array.isArray(currentOptions.series)) {
        currentOptions.series.forEach(series => {
            series.labelLine = series.labelLine || {};
            series.labelLine.lineStyle = series.labelLine.lineStyle || {};
            series.labelLine.lineStyle.width = value;
        });
    }
    return currentOptions;
}

/**
 * 更新系列项样式颜色
 * @param {string|Array} value - 颜色值或颜色数组的JSON字符串
 * @param {Object} currentOptions - 当前图表配置选项
 * @returns {Object} 更新后的图表配置选项
 */
function updateSeriesItemStyleColor(value, currentOptions) {
    if (currentOptions && currentOptions.series && Array.isArray(currentOptions.series)) {
        // 处理颜色值：支持逗号分隔字符串、数组、JSON字符串三种格式
        let colors = [];

        if (typeof value === 'string') {
            // 先尝试分割逗号（处理"#5470c6,#91cc75"格式）
            colors = value.split(',').map(color => color.trim()).filter(Boolean);

            // 如果分割后为空，尝试JSON解析（处理["#5470c6","#91cc75"]格式）
            if (colors.length === 0) {
                try {
                    colors = JSON.parse(value);
                    // 确保解析后是数组
                    if (!Array.isArray(colors)) {
                        colors = [];
                    }
                } catch (e) {
                    console.warn('颜色格式解析失败，使用默认颜色', e);
                    colors = [];
                }
            }
        } else if (Array.isArray(value)) {
            // 直接使用数组
            colors = value;
        }

        // 如果没有有效颜色，使用默认值
        if (colors.length === 0) {
            colors = ["#5470c6", "#91cc75", "#fac858", "#ee6666", "#73c0de"];
        }

        // 为每个系列分配颜色（循环使用颜色数组）
        currentOptions.series.forEach((series, index) => {
            // 确保itemStyle对象存在
            series.itemStyle = series.itemStyle || {};

            // 如果是需要按数据索引着色的系列（如柱状图），使用函数动态分配
            if (series.type === 'bar' || series.type === 'line') {
                series.itemStyle.color = function(params) {
                    // 容错处理：确保params和dataIndex有效
                    if (!params || typeof params.dataIndex !== 'number') {
                        return '#ccc'; // 默认灰色
                    }
                    // 循环使用颜色数组
                    const colorIndex = params.dataIndex % colors.length;
                    return colors[colorIndex] || '#ccc';
                };
            } else {
                // 其他类型系列（如饼图）按系列索引分配
                series.itemStyle.color = colors[index % colors.length];
            }
        });
    }
    return currentOptions;
}



/**
 * 更新系列项样式边框颜色
 * @param {string} value - 颜色值
 * @param {Object} currentOptions - 当前图表配置选项
 * @returns {Object} 更新后的图表配置选项
 */
function updateSeriesItemStyleBorderColor(value, currentOptions) {
    if (currentOptions.series && Array.isArray(currentOptions.series)) {
        currentOptions.series.forEach(series => {
            series.itemStyle = series.itemStyle || {};
            series.itemStyle.borderColor = value;
        });
    }
    return currentOptions;
}
